#include <stdio.h>

#include "SocketUtils.h"
#include "Log.h"

int	main(int argc, char **argv) {
    char buffer[100] = {0};
    
    UdpSocketServer udp = {0};
    UdpSocketOrigin origin = {0};

    if (createUdpSocketServer(&udp, 8080)) {
        WARNING_LOG("创建成功");

        int len = 0;
        while (1) {
            len = udpSocketRead(&udp, buffer, sizeof(buffer), &origin);
            INFO_LOG("receiver: len: %d: %s", len, buffer);

            len = udpSocketRead(&udp, buffer, sizeof(buffer), &origin);
            INFO_LOG("receiver: len: %d: %s", len, buffer);

            len = udpSocketWrite(&udp, buffer, sizeof(buffer), &origin);
            INFO_LOG("send: len: %d: %s", len, buffer);
            
            len = udpSocketWrite(&udp, buffer, sizeof(buffer), &origin);
            INFO_LOG("send: len: %d: %s", len, buffer);
        }
    } else {
        WARNING_LOG("创建失败");
    }
    return 0;


    //  //创建socket对象
    // // int sockfd=socket(AF_INET,SOCK_DGRAM,0);

    // UdpSocket socket = {0};
    // // createUdpSocket(&socket);

    // // //创建网络通信对象
    // // // struct sockaddr_in addr;
    // // // addr.sin_family =AF_INET;
    // // // addr.sin_port =htons(1324);
    // // // addr.sin_addr.s_addr=inet_addr("127.0.0.1");

    // // SocketAddress address;
    // // setSocketConnectAddress(&address, AF_INET, "127.0.0.1", 1324);

    // // //绑定socket对象与通信链接
    // // // int ret =bind(sockfd,(struct sockaddr*)&addr,sizeof(addr));
    // // // if(0>ret)
    // // // {
    // // //     printf("bind\n");
    // // //     return -1;
    // // // }
    // // socketBind(&socket, (struct sockaddr *)&address, sizeof(address));

    // createUdpSocketServer(&socket, 1324);

    // // struct sockaddr_in cli;
    // // socklen_t len=sizeof(cli);
    // UdpSocketOrigin origin = {0};

    // while(1)
    // {
    //     char buffer[100] = {0};
    //     char ret[100] = "Fuck";
    //     // recvfrom(sockfd,&buffer,sizeof(buffer),0,(struct sockaddr*)&cli,&len);
    //     udpSocketRead(&socket, buffer, sizeof(buffer), &origin);
    //     printf("recv val = %s\n",buffer);

    //     // sendto(socket.socket,ret,sizeof(ret),0,(struct sockaddr*)&origin.address,origin.address_len);
    //     udpSocketWrite(&socket,ret,sizeof(ret), &origin);
    //     printf("send val = %s\n",ret);        
    // }
    // // close(sockfd);
}